From 98480e8591d30575daedf738d37aa4488050547a Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Wed, 7 Mar 2018 17:19:53 -0500 Subject: [PATCH] use `Deref` instead of an explicit function --- src/cargo/core/interning.rs | 20 ++++++++++---------- src/cargo/core/resolver/mod.rs | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/cargo/core/interning.rs b/src/cargo/core/interning.rs index f8d028b34..9fea6503d 100644 --- a/src/cargo/core/interning.rs +++ b/src/cargo/core/interning.rs @@ -1,10 +1,10 @@ -use std::fmt; use std::sync::RwLock; use std::collections::HashSet; use std::slice; use std::str; use std::mem; use std::cmp::Ordering; +use std::ops::Deref; pub fn leek(s: String) -> &'static str { let boxed = s.into_boxed_str(); @@ -38,23 +38,23 @@ impl InternedString { cache.insert(s); InternedString { ptr: s.as_ptr(), len: s.len() } } - pub fn to_inner(&self) -> &'static str { +} + +impl Deref for InternedString { + type Target = str; + + fn deref(&self) -> &'static str { unsafe { let slice = slice::from_raw_parts(self.ptr, self.len); - str::from_utf8_unchecked(slice) + &str::from_utf8_unchecked(slice) } } } -impl fmt::Debug for InternedString { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "InternedString {{ {} }}", self.to_inner()) - } -} - impl Ord for InternedString { fn cmp(&self, other: &InternedString) -> Ordering { - self.to_inner().cmp(&other.to_inner()) + let str: &str = &*self; + str.cmp(&*other) } } diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index 011766d95..f8b0b26c9 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -371,7 +371,7 @@ pub fn resolve(summaries: &[(Summary, Method)], metadata: BTreeMap::new(), replacements: cx.resolve_replacements(), features: cx.resolve_features.iter().map(|(k, v)| { - (k.clone(), v.iter().map(|x| x.to_inner().to_string()).collect()) + (k.clone(), v.iter().map(|x| x.to_string()).collect()) }).collect(), unused_patches: Vec::new(), }; -- 2.30.2